package md;

import java.sql.*;

/**
 * En esta clase se encuentra la conexion a la base de datos. Esta clase es un
 * singleton, sirve para no repetir el uso de recursos.
 *
 * @author Jose Luis Torres
 * @version 1.0
 */
public class Db {

    private static Db singleton;
    private Connection conexion;

    /**
     * Unico constructor. No recibe parámetros y crea la conexxion a la base de
     * datos. No es accesible fuera de la clase.
     */
    private Db() {
        try {
            DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
            this.conexion = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "CONTRASEÑA", "admin");

            /*Statement stmt = this.conexion.createStatement();
            ResultSet rset = stmt.executeQuery("select * from \"Diccionario\"");
            while (rset.next()) {
            System.out.println(rset.getString("palabra"));   // Print col 1
            }
            stmt.close();*/
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }

    /**
     * Devuelve la instancia de la conexion a la base de datos. Es el unico
     * metodo que permite acceder a la conexion.
     *
     * @return Devuelve la instancia de conexion a la base de datos
     */
    public static Db getDb(){
        if(Db.singleton == null){
            Db.singleton = new Db();
        }
        return Db.singleton;
    }

    /**
     * Getter de la conexion instanciada.
     *
     * @return Devuelve un objeto tipo Connection con la conexión a la BDD.
     */
    public Connection getConexion() {
        return conexion;
    }
    
/*
    public static void main (String arg[]){
        Db.getDb();
    }*/
}
